<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="36-14-es6-class版-手写promise.js"></script>
</head>

<body>
    <script>
        // let p = Promise.resolve(new Promise((res, rej) => {
        //     rej('失败')
        // }));
        // let p = Promise.resolve('ok');
        // console.log(p);

        // let p = Promise.reject('err');
        // let p = Promise.reject(new Promise((res, rej) => {
        //     res('ok')
        // }));

        // console.log(p);

        // 构造函数

        let p = new Promise((res, rej) => {
            // console.log(123);
            // res('ok');
            rej('error')
                // throw '错误'
            console.log("执行器回调");
            // setTimeout(() => {
            //     res('成功');
            //     // rej('失败')
            // }, 100);
        });

        // console.log(p);

        let p2 = p.then(val => val, rea => {
            console.log('then回调');
            throw rea;
        });

        console.log('end');

        console.log(p2);


        // let p3 = p.catch(rea => {
        //     console.log(rea);
        //     // return 123;
        //     // return new Promise((res, rej) => {
        //     //     // rej('err')
        //     //     res('ok')
        //     // })
        //     throw '123';
        // })

        // console.log(p3);



        // let p2 = p.then(val => {
        //     // console.log('成功了', val);
        //     // return function() {
        //     //     console.log(123);
        //     // };
        //     // return new Promise((res, rej) => {
        //     //         res('成功')
        //     //             // rej('失败')
        //     //     })
        //     // throw '错误1'
        //     // return 456;
        // }, rea => {
        //     console.log('失败了', rea);
        //     return new Promise((res, rej) => {
        //             res('okk')
        //                 // rej('error')
        //         })
        //         // return 'abc';
        //         // throw '错误2'
        // })
        // console.log(p2);

        // p.then(val => {
        //     console.log('成功了2', val);
        // }, rea => {
        //     console.log('失败了2', rea);
        // })

        // p.then(val => {
        //     console.log('成功了3', val);
        // }, rea => {
        //     console.log('失败了3', rea);
        // })

        // console.log('end');
    </script>
</body>

</html>